// package com.ruoyi.sms.utils;
//
// import com.ruoyi.common.core.redis.RedisCache;
// import com.ruoyi.sms.domain.SmsConfig;
// import com.ruoyi.sms.service.impl.AliSendMsgService;
// import org.springframework.beans.factory.annotation.Autowired;
// import org.springframework.stereotype.Component;
//
// import java.util.HashMap;
// import java.util.Map;
// import java.util.concurrent.TimeUnit;
//
// @Component
// public class SendMsgUtils {
//
//     @Autowired
//     private RedisCache redisUtil;  // 使用 RedisUtil 来操作 Redis
//
//     // 发送验证码并存储到 Redis
//     public String sendVerificationCode(SmsConfig SmsConfig, String phone) {
//         // 检查是否在冷却时间内
//         if (isInCooldown(phone)) {
//             return "请稍后再试，冷却时间未到";
//         }
//         // 生成6位验证码
//         String verificationCode = generateVerificationCode();
//         // 设置自定义参数 (变量短信)
//         Map<String, String> templateData = new HashMap<>();
//         templateData.put("code", verificationCode);  // 将生成的验证码放入短信模板
//         // 发送短信验证码（示例）
//         AliSendMsgService.sendAliMsg(SmsConfig, phone, verificationCode);  // 调用短信服务发送验证码
//         // 将验证码存储到 Redis，并设置过期时间为60秒
//         redisUtil.setCacheObject(phone, verificationCode, 3, TimeUnit.MINUTES);  // 使用 RedisUtil 存储验证码
//         // 设置冷却时间，防止重复请求
//         redisUtil.setCacheObject(phone + "_cooldown", "cooldown", 3, TimeUnit.MINUTES);  // 设置冷却时间，防止重复提交
//         return verificationCode;  // 返回生成的验证码
//     }
//
//
//     // 生成6位随机验证码
//     private String generateVerificationCode() {
//         return String.valueOf((int) (Math.random() * 900000) + 100000);  // 生成100000到999999之间的随机数
//     }
//
//     // 检查验证码是否过期（有效期为1分钟）
//     public boolean isCodeExpired(String phone) {
//         String storedCode = redisUtil.getCacheObject(phone);
//         return storedCode == null;  // 如果验证码不存在，表示已过期
//     }
//
//     // 检查验证码冷却时间，防止重复提交
//     private boolean isInCooldown(String phone) {
//         String cooldownStatus = redisUtil.getCacheObject(phone + "_cooldown");
//         return cooldownStatus != null;  // 如果冷却状态存在，表示该手机号仍处于冷却期
//     }
//
//     // 验证验证码
//     public boolean validateVerificationCode(String phone, String verificationCode) {
//         String storedCode = redisUtil.getCacheObject(phone);
//         return verificationCode.equals(storedCode);
//     }
// }
